#pragma once
#include "interfaces.h"
#include <map>
#include <stack>
class ParserStack;
typedef std::map< std::string, void(*)(ParserStack*) > CallbackMap;
typedef std::map< int , CallbackMap > StackMap;
class ParserStack // this will save the function ptrs with some value it associate with them and call them if they are in the right stack frame
{
public:
	ParserStack() { m_ToStack = -2; }
	~ParserStack() {}

	void ProcessString(const std::string & str);

	std::list<int> m_Stack;
	int m_ToStack;
	StackMap m_StackMap;
	void* ptr_tosend;
};